<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- Copyright © 1988-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
Texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<title>profopt Testing (GNU Compiler Collection (GCC) Internals)</title>

<meta name="description" content="profopt Testing (GNU Compiler Collection (GCC) Internals)">
<meta name="keywords" content="profopt Testing (GNU Compiler Collection (GCC) Internals)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Option-Index.html" rel="index" title="Option Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Testsuites.html" rel="up" title="Testsuites">
<link href="compat-Testing.html" rel="next" title="compat Testing">
<link href="gcov-Testing.html" rel="prev" title="gcov Testing">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
span:hover a.copiable-link {visibility: visible}
-->
</style>


</head>

<body lang="en">
<div class="section-level-extent" id="profopt-Testing">
<div class="nav-panel">
<p>
Next: <a href="compat-Testing.html" accesskey="n" rel="next">Support for testing binary compatibility</a>, Previous: <a href="gcov-Testing.html" accesskey="p" rel="prev">Support for testing <code class="command">gcov</code></a>, Up: <a href="Testsuites.html" accesskey="u" rel="up">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h3 class="section" id="Support-for-testing-profile_002ddirected-optimizations"><span>7.7 Support for testing profile-directed optimizations<a class="copiable-link" href="#Support-for-testing-profile_002ddirected-optimizations"> &para;</a></span></h3>

<p>The file <samp class="file">profopt.exp</samp> provides language-independent support for
checking correct execution of a test built with profile-directed
optimization.  This testing requires that a test program be built and
executed twice.  The first time it is compiled to generate profile
data, and the second time it is compiled to use the data that was
generated during the first execution.  The second execution is to
verify that the test produces the expected results.
</p>
<p>To check that the optimization actually generated better code, a
test can be built and run a third time with normal optimizations to
verify that the performance is better with the profile-directed
optimizations.  <samp class="file">profopt.exp</samp> has the beginnings of this kind
of support.
</p>
<p><samp class="file">profopt.exp</samp> provides generic support for profile-directed
optimizations.  Each set of tests that uses it provides information
about a specific optimization:
</p>
<dl class="table">
<dt><code class="code">tool</code></dt>
<dd><p>tool being tested, e.g., <code class="command">gcc</code>
</p>
</dd>
<dt><code class="code">profile_option</code></dt>
<dd><p>options used to generate profile data
</p>
</dd>
<dt><code class="code">feedback_option</code></dt>
<dd><p>options used to optimize using that profile data
</p>
</dd>
<dt><code class="code">prof_ext</code></dt>
<dd><p>suffix of profile data files
</p>
</dd>
<dt><code class="code">PROFOPT_OPTIONS</code></dt>
<dd><p>list of options with which to run each test, similar to the lists for
torture tests
</p>
</dd>
<dt><code class="code">{ dg-final-generate { <var class="var">local-directive</var> } }</code></dt>
<dd><p>This directive is similar to <code class="code">dg-final</code>, but the
<var class="var">local-directive</var> is run after the generation of profile data.
</p>
</dd>
<dt><code class="code">{ dg-final-use { <var class="var">local-directive</var> } }</code></dt>
<dd><p>The <var class="var">local-directive</var> is run after the profile data have been
used.
</p></dd>
</dl>

</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="compat-Testing.html">Support for testing binary compatibility</a>, Previous: <a href="gcov-Testing.html">Support for testing <code class="command">gcov</code></a>, Up: <a href="Testsuites.html">Testsuites</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
